package cn.pupil.springframework.core.convert;

import com.sun.istack.internal.Nullable;

/**
 * @Description: 类型转换服务抽象接口
 * @Author: pupil
 * @Date: 2024/12/16 下午 4:58
 */
public interface ConversionService {
    /**
     * 判断是否能进行转换
     * <p>
     * Return {@code true} if objects of {@code sourceType} can be converted to the {@code targetType}.
     * 如果{@code sourceType}的对象可以转换为{@code targetType}，则返回{@code true}。
     */
    boolean canConvert(@Nullable Class<?> sourceType, Class<?> targetType);

    /**
     * 类型转换
     * Convert the given {@code source} to the specified {@code targetType}.
     * 将给定的｛@code source｝转换为指定的｛@code-targetType｝。
     */
    <T> T convert(Object source, Class<T> targetType);
}
